<?php

/**
 * This file is part of Cxz
 *
 * (c) Flaravel 2020 <https://github.com/flaravel/cxz>
 *
 *  document https://learnku.com/blog/FLaravel
 *
 * visited
 */

namespace App\Admin\Metrics\Examples;

use Dcat\Admin\Widgets\Metrics\RadialBar;
use Illuminate\Http\Request;

class Tickets extends RadialBar {
	/**
	 * 初始化卡片内容
	 */
	protected function init() {
		parent::init();

		$this->title('Tickets');
		$this->height(400);
		$this->chartHeight(300);
		$this->chartLabels('Completed Tickets');
		$this->dropdown([
			'7'   => 'Last 7 Days',
			'28'  => 'Last 28 Days',
			'30'  => 'Last Month',
			'365' => 'Last Year',
		]);
	}

	/**
	 * 处理请求
	 *
	 * @param Request $request
	 *
	 * @return mixed|void
	 */
	public function handle(Request $request) {
		switch ($request->get('option')) {
			case '365':
			case '30':
			case '28':
			case '7':
			default:
				// 卡片内容
				$this->withContent(162);
				// 卡片底部
				$this->withFooter(29, 63, '1d');
				// 图表数据
				$this->withChart(83);
		}
	}

	/**
	 * 设置图表数据.
	 *
	 * @param int $data
	 *
	 * @return $this
	 */
	public function withChart(int $data) {
		return $this->chart([
			'series' => [$data],
		]);
	}

	/**
	 * 卡片内容
	 *
	 * @param string $content
	 *
	 * @return $this
	 */
	public function withContent($content) {
		return $this->content(
			<<<HTML
<div class="d-flex flex-column flex-wrap text-center">
    <h1 class="font-lg-2 mt-2 mb-0">{$content}</h1>
    <small>Tickets</small>
</div>
HTML
		);
	}

	/**
	 * 卡片底部内容.
	 *
	 * @param string $new
	 * @param string $open
	 * @param string $response
	 *
	 * @return $this
	 */
	public function withFooter($new, $open, $response) {
		return $this->footer(
			<<<HTML
<div class="d-flex justify-content-between p-1" style="padding-top: 0!important;">
    <div class="text-center">
        <p>New Tickets</p>
        <span class="font-lg-1">{$new}</span>
    </div>
    <div class="text-center">
        <p>Open Tickets</p>
        <span class="font-lg-1">{$open}</span>
    </div>
    <div class="text-center">
        <p>Response Time</p>
        <span class="font-lg-1">{$response}</span>
    </div>
</div>
HTML
		);
	}
}
